﻿

#pragma once

#include "headers.h"


/// Abstrakcyjna klasa ObiektSferyczny, reprezentujaca cialo niebieskie o ksztalcie kuli Zawiera pola reprezentujace siatke kuli. 
class ObiektSferyczny
{
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//														%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//							PROTECTED
//														%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
protected:

//#################################################################################################################
//                   Mesze
//#################################################################################################################
	LPD3DXMESH tempMesh;						///< tymczasowa siatka kuli (tworzona w konstruktorze klasy ObiektSferyczny
	LPD3DXMESH Mesh;							///< siatka wlasciwa - potrzebne sa dwie siatki zeby pokolorowac te siatke.
												///< siatka Mesh wypelniana jest juz w klasie pochodnej
	LPD3DXMESH g_pMesh;							///<siatka obiektu 
	D3DMATERIAL9* g_pMeshMaterials;				///<material siatki 
	LPDIRECT3DTEXTURE9* g_pMeshTextures;		///<tekstury siatki 
	DWORD g_dwNumMaterials;						///<liczba tekstur siatki 

//#################################################################################################################
//                   bufor wierzchołków
//#################################################################################################################
	LPDIRECT3DVERTEXBUFFER9 pTempVertexBuffer;  ///< tymczasowy bufor wiercholków, równiez potrzebny w klasie pochodnej

//#################################################################################################################
//                   zmienne merytoryczne
//#################################################################################################################
	float fDistance;							///< odleglosc kuli od srodka kuli wlasciciela 
	const int kFontSize;						///< rozmiar czcionki
	char* nazwaPlanety;							///< nazwa planety
	std::string nazwaPlanetyStr;				///< ciekawe cos
	char* srednicaBiegunowa;					///< srednica obiektu
	char* odlegloscOdSlonca;					///< odleglosc od Slonca
	int vrcIleKlatekDoWyswietlenia;				///< ilośc klatek przez ktore ma byc jeszcze wyswietlany opis planety


//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//														%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//							PUBLIC
//														%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
public:


//#################################################################################################################
	ObiektSferyczny(void);///< konstruktor bezparametryczny - nie wykorzystywany



//#################################################################################################################
	virtual ~ObiektSferyczny(void);	///< destruktor



//#################################################################################################################
	ObiektSferyczny(UINT Slices, UINT Stacks, float fDistance, 
					char* nazwaPlanety, char* srednicaBiegunowa, char* odlegloscOdSlonca);///< konstruktor wieeeeloargumentowy - gesto wykorzystywany



//#################################################################################################################
	void rysuj(ID3DXFont * gFont, D3DXVECTOR3 cameraPosition, D3DXVECTOR3 LookAtVector,  float* dist,  std::string* ktoraPlaneta);///< funkcja rysujaca



//#################################################################################################################
	virtual  D3DXMATRIX przeksztalc(bool bOrbitOn, float fSpeedModifier, float fElpasedTime);	///< wirtualna metoda odpowiadaj¹ca za transformacje i zwracanie przekszta³conej siatki
};